// 回调函数 引自:https://blog.csdn.net/baidu_32262373/article/details/54969696?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2
// 一.
function say(value) {
    alert(value);
}
alert(say);//alert窗口弹出:function say(value) {alert(value);}
//只写变量名  say   返回的将会是 say方法本身，以字符串的形式表现出来。

alert(say('hi js.'));//alert窗口弹出:'hi js.'
// 而在变量名后加()如say()返回的就会使say方法调用后的结果，这里是弹出value的值。

// 二、js中函数可以作为参数传递

// - 将回调函数的参数作为与回调函数同等级的参数进行传递
function say(value) {
    alert(value);
}
function execute(someFunction, value) {
    someFunction(value);
}
execute(say, 'hi js.');
// ↑直接写 "say;" = ↓匿名函数直接执行
function execute(someFunction, value) {
    someFunction(value);
}
execute(function (value) { alert(value); }, 'hi js.');
//直接写 say 方法的方法名 与 下面的 匿名函数 可以认为是一个东西
// 这里的say或者匿名函数就被称为回调函数。

// - 回调函数的参数在调用回调函数内部创建
function say(value) {
    alert(value.name);
}
function execute(someFunction, value) {
    var value = {
        name: 'hi js.'
    }
    someFunction(value);
}
execute(say);